feat: Docker branch isolation for parallel development#202
Draft
feat: Docker branch isolation for parallel development#202
Conversation
Implement automatic environment isolation based on git branch names,
allowing developers to work on multiple branches simultaneously without
conflicts between databases, containers, or Docker volumes.
Key changes:
- Auto-detect git branch and normalize name (replace special chars)
- Tag Docker images by branch (python.ie/website:{branch})
- Isolate PostgreSQL databases per branch (pythonie_{branch})
- Create separate Docker volumes per branch
- Add configurable ports for parallel development (WEB_PORT, PG_PORT)
- Upgrade Redis from 6.2 to 7-alpine with persistence
- Add healthchecks for PostgreSQL and Redis
- Remove unused minio and mc services
New Taskfile commands:
- task branch:info - Show current branch environment
- task branch:volumes - List all Docker volumes by branch
- task branch:clean - Remove volumes for current branch
- task env:write - Generate .env file for docker-compose
Documentation:
- Add DOCKER-BRANCHES.md with usage examples and troubleshooting
- Add .env.example template for custom port overrides
- Update .gitignore to exclude generated .env file
This enables developers to switch branches or run multiple instances
in parallel without losing data or experiencing port conflicts.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Extend branch isolation to SQLite databases for local development
and add comprehensive documentation for the branch isolation feature.
Changes to SQLite isolation:
- Modify dev.py to use branch-specific SQLite files (db-{branch}.sqlite3)
- Add *.sqlite3 to .gitignore to exclude database files
- Remove debug print statement from dev.py
- Each branch now has isolated SQLite data without requiring worktrees
Documentation improvements:
- Add complete "Docker Branch Isolation" section to README.md
- Document all branch:* commands (info, verify, volumes, clean)
- Add examples for multi-branch development and branch switching
- Add troubleshooting section for database configuration issues
- Update DOCKER-BRANCHES.md to mention SQLite isolation
- Add note in local setup about GIT_BRANCH export
New Taskfile command:
- task branch:verify - Comprehensive verification of branch configuration
Shows git branch, expected database, .env file, and PostgreSQL databases
This ensures complete data isolation between branches whether using
Docker (PostgreSQL) or local development (SQLite), preventing data
loss when switching branches.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Contributor
Author
|
I've converted this PR to draft status because I realize I've committed too many separate concerns together, which doesn't follow good PR practices. I will split this work into separate PRs:
This separation will make the changes easier to review and allow for incremental adoption. I'll close this PR once the split PRs are ready. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR implements automatic environment isolation based on git branch names, allowing developers to work on multiple branches simultaneously without conflicts between databases, containers, or Docker volumes.
Key Features
🔄 Automatic Branch Detection
🐳 Docker Isolation
python.ie/website:{branch})pythonie-{service}-{branch})pythonie-postgres-data-{branch},pythonie-redis-data-{branch})pythonie_{branch}) and SQLite (db-{branch}.sqlite3)🛠️ New Commands
📚 Documentation
.env.exampletemplate for custom port overridesChanges
Infrastructure
GIT_BRANCH.envfile, newbranch:*commandsdb-{branch}.sqlite3)Service Updates
Files Modified
.gitignore- Added.envand*.sqlite3docker-compose.yml- Branch-based configurationTaskfile.yaml- Branch detection and new taskspythonie/pythonie/settings/dev.py- SQLite isolationREADME.md- Complete documentationDOCKER-BRANCHES.md- Detailed usage guide.env.example- Configuration templateUse Cases
Parallel Development
Branch Switching
Testing
Verified on branch
feat/docker-branch-isolation:task branch:*commands workinggit checkoutBreaking Changes
None. This is fully backward compatible:
🤖 Generated with Claude Code